M08 Verkon segmentointi ja palomuurit
Takaisin opintojakson aikatauluun
Opetusvideot
Tausta
Alunperin tietoverkot suunniteltiin mahdollistamaan saatavuus viestiä lähettävien tahojen kesken... olosuhteista riippumatta (esim. ydinsota). Reitti tahojen välille voitiin aina muodostaa dynaamisen reitityksen avulla.
Valitettavasti tämä saatavuus ei ole aina tervetullutta. Vuosien varrella on tullut oppeja, ettei kaikkien päätelaitteiden tarvitse yhteydessä kaikkiin päätelaitteisiin.
Tätä saatavuutta rajoittaa yleensä palomuuri tietoverkoissa.
Palomuurit (ja niiden säännöstöt) ovat klassinen esimerkki kyberturvallisuudesta. Ja tämän vuoksi termin tunnistaa moni kuluttaja.
Tietoturvallisuus myös vaikutti tähän ilmiöön, koska Tietoa piti turvata kaikissa sen olomuodoissa elinkaaren aikana:
- Käytössä
- paperilla
- tietokoneen näytöllä
- Liikkeellä
- tietoverkoissa !!!
- Levossa
- kovalevyillä
- USB -tikuilla
Palomuurit asettavat suojauksen verkojen rajoille
eli verkkosegmenttien
reunoille, jossa ne voivat suodattaa läpimenevää liikennettä. Tämä ei ole juuri poikkeavaa kaupungin muureista, maan rajoista tai rakennusten kulunvalvonnasta, jossa voidaan pakottaa suodatussääntöjä perustuen passeihin/kulkulupiin.
Näitä suodatuspäätöksiä asennetaan yleensä palomuurin sääntötauluun
.
Varoitus: Palomuurit eivät voi tehdä mitään näistä, jos liikenne ei kulje/reititetä sen laitteen lävitse!
Tämä tarkoittaa että tietoverkon ylläpitäjän pitää pystyä käsittelemään (ja reitittämään) tietoverkon liikennettä palomuuriin!
Palomuurit sallivat verkon:
- Kielletään (eng. Deny)
- Sallitaan (eng. Permit)
- Estetään(eng. Reject), Lähettämällä TCP RST tai ICMP port unreachable viesti lähettäjälle
- Salataan/puretaan salaus (esim. VPN -yhteydessä)
- Autentikoidaan (e.g. pakotetaan kirjautumisportaaliin)
- Priorisoidaan (Lisätään palvelunlaadun merkkaus esim. TOS or DSCP)
- Jonotetaan (Lisätään liikenne jonoon ja annetaan jonotusalgoritmin purkaa jonot)
- Suodatetaan (esim. pyyhitään haitallisia ohjelmia liikenteestä)
- ja tarkkaillaan (logitetaan ja monitoroidaan liikenettä)
...liikennettä alueelta toiselle
Verkkosegmentit eli vyöhykeet (eng. Zones)
Hyvin usein eri palomuurit käyttävät termiä verkkosegmentti
(eng. network segments
) tai politiikkavyöhykkeet
(eng. (policy) zones
). Tässä aiheessa ei ole standardoitua terminologiaa palomuureille, joten termit vaihtuvat per palomuurivalmistaja.
Onko sääntö englanniksi permit
, allow
vai accept
?
Verkkosegmentti
(eng. Network Segment
) on yleensä aliverkko (tai yliverkko) osoitteita.
Politiikkavyöhyke
(eng. (policy) zones
) on ryhmä Verkkosegmenttejä
Esimerkki tästä olisi esim. LabraNet:n luokat. Käytetään luokkia D330, D331 ja D334 esimerkkinä. Kaikissa näissä luokissa on monia tietokoneita ja jokaisessa on oma aliverkko:
- D330, 192.168.xx.0/24
- D331, 192.168.yy.0/24
- D334, 192.168.zz.0/24
Oletettakoon että LabraNet:ssä on myös palvelimia (esim. student.labranet.jamk.fi)
- servers, 192.168.kk.0/24
The topology would look like this.
Palomuurin sääntötaulu näyttäisi tältä:
Index | Mistä | Mihin | Protokolla | Toimenpide |
---|---|---|---|---|
01 | D330 | Servers | HTTP | Accept |
02 | D331 | Servers | HTTP | Accept |
03 | D334 | Servers | HTTP | Accept |
04 | Any | Any | Any | Deny |
Toimenpide
ons ama kaikille luokille. Täten Array
:n (suom. rivin/taulukon) luonti on kätevää.
Array:t on osa ohjelmointia
Classrooms = [D330, D331, D334]
Joten tämä kategorisointi verkkosegmenttejä
näyttäisi alapuolisessa kuviossa
Johtaen palomuurisääntötauluun
Index | Mistä | Mihin | Protokolla | Toimenpide |
---|---|---|---|---|
01 | Classrooms | Servers | HTTP | Accept |
02 | Any | Any | Any | Deny |
Mieti kuinka monta sääntöriviä säästyy, jos puhutaan kaikista eri luokista IT-dynamo -rakennuksessa?
Vyöhykkeistäminen johtaa paljon luettavampaan/ymmärrettävämpään palomuurisääntötauluun
Palomuurityyppejä
Päätelaite palomuurit
Useita eri palomuurituotteita on markkinoilla päätelaitteille. Usein kaupallisia tuotteita myydään termillä Endpoint Protection
, jossa palomuurin lisäksi on paljon muita toiminnallisuuksia kuten virustorjunta, tiedonvuotamisenesto (eng. data loss preventation) ja niin edelleen.
Kuitenkin perusominaisuutena kaikissa käyttöjärjestelmissä on pohjimmillaan palomuuri.
Toiminnallisuus joka sallii ohjelmistojen keskustella tietoverkon kanssa, johon olet kytkeytynyt.
Windows palomuuri
Windows palomuuri (eng. Windows Firewall) tutustutettiin Windows XP Service Pack 1:ssä ja on sen myötä jalkautunut täysin toimivaksi ratkaisuksi Windows -ympäristöissä.
iptables
IPtables on yleisin palomuuriratkaisu Linux käyttöjärjestelmissä.
Quote
iptables is the userspace command line program used
to configure the Linux 2.4.x and later packet filtering
ruleset. It is targeted towards system administrators.
The iptables package also includes ip6tables. ip6tables
is used for configuring the IPv6 packet filter.
- Source: Netfilter.org
Heikkous IPtables:ssa on että jokaisella protokollala pitää olla oma xyz
tables toteutus: arptables, ip6tables, iptables, ...
sudo iptables -L
lubuntu.ova:sta
Chain INPUT (policy ACCEPT)
target prot opt source destination
ufw-before-logging-input all -- anywhere anywhere
ufw-before-input all -- anywhere anywhere
ufw-after-input all -- anywhere anywhere
ufw-after-logging-input all -- anywhere anywhere
ufw-reject-input all -- anywhere anywhere
ufw-track-input all -- anywhere anywhere
Chain FORWARD (policy DROP)
target prot opt source destination
ufw-before-logging-forward all -- anywhere anywhere
ufw-before-forward all -- anywhere anywhere
ufw-after-forward all -- anywhere anywhere
ufw-after-logging-forward all -- anywhere anywhere
ufw-reject-forward all -- anywhere anywhere
ufw-track-forward all -- anywhere anywhere
Chain OUTPUT (policy ACCEPT)
target prot opt source destination
ufw-before-logging-output all -- anywhere anywhere
ufw-before-output all -- anywhere anywhere
ufw-after-output all -- anywhere anywhere
ufw-after-logging-output all -- anywhere anywhere
ufw-reject-output all -- anywhere anywhere
ufw-track-output all -- anywhere anywhere
Chain ufw-after-forward (1 references)
target prot opt source destination
Chain ufw-after-input (1 references)
target prot opt source destination
ufw-skip-to-policy-input udp -- anywhere anywhere udp dpt:netbios-ns
ufw-skip-to-policy-input udp -- anywhere anywhere udp dpt:netbios-dgm
ufw-skip-to-policy-input tcp -- anywhere anywhere tcp dpt:netbios-ssn
ufw-skip-to-policy-input tcp -- anywhere anywhere tcp dpt:microsoft-ds
ufw-skip-to-policy-input udp -- anywhere anywhere udp dpt:bootps
ufw-skip-to-policy-input udp -- anywhere anywhere udp dpt:bootpc
ufw-skip-to-policy-input all -- anywhere anywhere ADDRTYPE match dst-type BROADCAST
Chain ufw-after-logging-forward (1 references)
target prot opt source destination
LOG all -- anywhere anywhere limit: avg 3/min burst 10 LOG level warning prefix "[UFW BLOCK] "
Chain ufw-after-logging-input (1 references)
target prot opt source destination
Chain ufw-after-logging-output (1 references)
target prot opt source destination
Chain ufw-after-output (1 references)
target prot opt source destination
Chain ufw-before-forward (1 references)
target prot opt source destination
ACCEPT all -- anywhere anywhere ctstate RELATED,ESTABLISHED
ACCEPT icmp -- anywhere anywhere icmp destination-unreachable
ACCEPT icmp -- anywhere anywhere icmp time-exceeded
ACCEPT icmp -- anywhere anywhere icmp parameter-problem
ACCEPT icmp -- anywhere anywhere icmp echo-request
ufw-user-forward all -- anywhere anywhere
Chain ufw-before-input (1 references)
target prot opt source destination
ACCEPT all -- anywhere anywhere
ACCEPT all -- anywhere anywhere ctstate RELATED,ESTABLISHED
ufw-logging-deny all -- anywhere anywhere ctstate INVALID
DROP all -- anywhere anywhere ctstate INVALID
ACCEPT icmp -- anywhere anywhere icmp destination-unreachable
ACCEPT icmp -- anywhere anywhere icmp source-quench
ACCEPT icmp -- anywhere anywhere icmp time-exceeded
ACCEPT icmp -- anywhere anywhere icmp parameter-problem
ACCEPT icmp -- anywhere anywhere icmp echo-request
ACCEPT icmp -- anywhere anywhere icmp echo-request state RELATED,ESTABLISHED
ACCEPT udp -- anywhere anywhere udp spt:bootps dpt:bootpc
ufw-not-local all -- anywhere anywhere
ACCEPT udp -- anywhere 224.0.0.251 udp dpt:mdns
ACCEPT udp -- anywhere 239.255.255.250 udp dpt:1900
ufw-user-input all -- anywhere anywhere
Chain ufw-before-logging-forward (1 references)
target prot opt source destination
Chain ufw-before-logging-input (1 references)
target prot opt source destination
Chain ufw-before-logging-output (1 references)
target prot opt source destination
Chain ufw-before-output (1 references)
target prot opt source destination
ACCEPT all -- anywhere anywhere
ACCEPT all -- anywhere anywhere ctstate RELATED,ESTABLISHED
ACCEPT icmp -- anywhere anywhere state NEW,RELATED,ESTABLISHED
ACCEPT icmp -- anywhere anywhere state RELATED,ESTABLISHED
ufw-user-output all -- anywhere anywhere
Chain ufw-logging-allow (0 references)
target prot opt source destination
LOG all -- anywhere anywhere limit: avg 3/min burst 10 LOG level warning prefix "[UFW ALLOW] "
Chain ufw-logging-deny (2 references)
target prot opt source destination
RETURN all -- anywhere anywhere ctstate INVALID limit: avg 3/min burst 10
LOG all -- anywhere anywhere limit: avg 3/min burst 10 LOG level warning prefix "[UFW BLOCK] "
Chain ufw-not-local (1 references)
target prot opt source destination
RETURN all -- anywhere anywhere ADDRTYPE match dst-type LOCAL
RETURN all -- anywhere anywhere ADDRTYPE match dst-type MULTICAST
RETURN all -- anywhere anywhere ADDRTYPE match dst-type BROADCAST
ufw-logging-deny all -- anywhere anywhere limit: avg 3/min burst 10
DROP all -- anywhere anywhere
Chain ufw-reject-forward (1 references)
target prot opt source destination
Chain ufw-reject-input (1 references)
target prot opt source destination
Chain ufw-reject-output (1 references)
target prot opt source destination
Chain ufw-skip-to-policy-forward (0 references)
target prot opt source destination
DROP all -- anywhere anywhere
Chain ufw-skip-to-policy-input (7 references)
target prot opt source destination
ACCEPT all -- anywhere anywhere
Chain ufw-skip-to-policy-output (0 references)
target prot opt source destination
ACCEPT all -- anywhere anywhere
Chain ufw-track-forward (1 references)
target prot opt source destination
Chain ufw-track-input (1 references)
target prot opt source destination
ACCEPT tcp -- anywhere anywhere ctstate NEW
ACCEPT udp -- anywhere anywhere ctstate NEW
Chain ufw-track-output (1 references)
target prot opt source destination
ACCEPT tcp -- anywhere anywhere ctstate NEW
ACCEPT udp -- anywhere anywhere ctstate NEW
Chain ufw-user-forward (1 references)
target prot opt source destination
Chain ufw-user-input (1 references)
target prot opt source destination
ACCEPT all -- anywhere anywhere
Chain ufw-user-limit (0 references)
target prot opt source destination
LOG all -- anywhere anywhere limit: avg 3/min burst 5 LOG level warning prefix "[UFW LIMIT BLOCK] "
REJECT all -- anywhere anywhere reject-with icmp-port-unreachable
Chain ufw-user-limit-accept (0 references)
target prot opt source destination
ACCEPT all -- anywhere anywhere
Chain ufw-user-logging-forward (0 references)
target prot opt source destination
Chain ufw-user-logging-input (0 references)
target prot opt source destination
Chain ufw-user-logging-output (0 references)
target prot opt source destination
Chain ufw-user-output (1 references)
target prot opt source destination
ACCEPT all -- anywhere anywhere
nftables
nftables on kilpailija iptables:lle.
nftables -komennot ovat erilaisia verrattuna iptables -komentoihin
nft add table ip nimi
nft add chain ip nimi forward { type filter hook forward priority 0\; }
nft add chain ip nimi forward { tcp dport 80 ip daddr 1.150.40.100 counter accept \; }
nft add rule ip nimi forward ct state established,related accept
nft insert rule ip nimi forward icmp type {echo-request} accept
nft add chain ip nimi forward { drop\; }
nft add chain ip nimi incoming { type filter hook input priority 0\; }
nft add chain ip nimi incoming { policy drop\; }
nft add chain ip nimi incoming { icmp type {echo-request} accept\; }
nft add chain ip nimi incoming { tcp dport 22 accept\; }
nft list table nimi -a
Yksinkertainen palomuuri (eng. Uncomplicated Firewall)
Ubuntussa (~20.04) on oletuksena asennettuna ufw
käyttäjille, jotka eivät halua opetella käyttämään iptables (tai nftables).
Verkkopalomuurit
Vyos
Vyos on palomuurisuodattimia (eng. firewall filters) joilla voi asettaa rajoitteita liikenteelle aliverkkojen välillä.
PfSense
Pfsense on avoimen lähdekoodin palomuuritoteutus, jossa on graafinen käyttöliittymä säännöstön hallinnalle. Tämän vuoksi se on hyvin suosittu pienissä organisaatioissa, jotka tarvitsevat perus verkkopalomuurin toiminnallisuuksia.
Sophos
Sophos tarjoaa XG Firewall -tuotteeseen ilmaisia lisenssejä ajettavaksi virtuaalikoneilla.
Esimerkki Sophos -käyttöliittymästä ~2016 paikkeilta
Lähde: Laboratory Exercise 3, Jare Ristimäki, Nikke Kettunen, Henri Huuskonen, Meeri Niiranen, Vesse Saastamoinen
Paloalto
Paloalto on palomuurituote jota käytetään LabraNet:ssä.
Tilallinen / Tilaton palomuuri
Palomuurin tilataulu
on dynaaminen sääntötaulu, joka heijastaa läpipäästyn liikenteen kaksisuuntaisuutta.
Tarkoittaen että jos liikennettä sallitaan ulos
verkosta, pitää se myös sallia sisään
heijastaen säännöstössä.
Annettuna alapuolinen topologia
Sääntötaulu voisi olla
Index | Mistä | Mihin | Protokolla | Toimenpide |
---|---|---|---|---|
01 | 1.1.200.0/24 | 1.1.100.0/24 | HTTP | Accept |
02 | Any | Any | Any | Deny |
Tämä tarkoittaisi että pelkästään liikenne työasemalta olisi sallittuna palvelimelle.
Heijastamalla liikenne takaisin, tarkoittaa että dynaamisesti lisätään sääntötauluun rivi (seuraten tietoliikenteen tilallisuutta
).
Index | Mistä | Mihin | Protokolla | Toimenpide |
---|---|---|---|---|
01 | 1.1.200.0/24 | 1.1.100.0/24 | HTTP | Accept |
02 | 1.1.100.0/24 | 1.1.200.0/24 | HTTP* | Accept |
03 | Any | Any | Any | Deny |
Warning
Nämä tilataulut ovat hankalia synkronoida korkean saatavuuden ympäristöissä, vaatien heartbeat
kaapeleita palomuurien välille synkronoidakseen tilataulut kahdennetun laitteen RAM muistien välillä.
Palomuurien sijoitus
Palomuurien sijoitus on hankala käsite. Syvyys puolustuksessa (eng. Depth in Defence) vaatii että päätelaitteilla on oma palomuuri käyttöjärjestelmässä ja sen yhteydessä käytetään vielä verkkopalomuuria tukena.
Eri suojaustasot vaativat useita eri verkkopalomuureja, jotta eri suojaustasollisten verkkosegmenttien välillä voidaan hallinnoida liikennettä.
Yhdyskäytäväohje, sorry only in finnish
Konfiguroidaan Vyos palomuurilla
Ole varovainen kun konfiguroit palomuureja!
Onneksemme meillä on virtualisoinnin konsolit, josta voimme hallinnoida palomuurina toimivia virtuaalikoneita (vyoseja).
Tuotannossa kuitenkin pitää joskus konfiguroida palomuureja hallintayhteyden lävitse (esim. SSH ja HTTPS).
Jostain syystä kaikkien pitää kokea kun palomuuraa itsensä ulos laitteesta
Ihan sama kuinka monta varoitusta antaa, ole varovainen kun päätät lyödä sisään commit
Jotta meidän vyos
:t ovat saavutettavissa. On hyvä globaalisti sallia ping
palomuurin lävitse.
set firewall all-ping <enable/disable>
Tämän jälkeen voimme ruveta asettamaan vyöhykkeitä
. Käytetään ympäristössämme 3 eri vyöhykettä:
- LAN
- Rajapinnat jotka käyttävät yksityisiä IPv4 osoitteita
- WAN
- rajapinta jossa on julkinen IPv4 osoite
- vyos
- IPv4 osoitteet, jotka ovat paikallisia tälle
vyos
:lle
- IPv4 osoitteet, jotka ovat paikallisia tälle
Vyöhykkeet voidaan perustaa antamalla komento set zone-policy zone <name> default-action <drop/accept>
.
Oletuksena (koska sääntötaulut yleensä aina sisältävät oletushylkäyksen) perustamme vyöhykkeet komennoilla:
set zone-policy zone LAN default-action drop
set zone-policy zone WAN default-action drop
set zone-policy zone vyos default-action drop
Tämän jälkeen meidän pitää sitoa mikä rajapinta on sidottuna mihinkäkin vyöhykkeeseen komennolla: set zone-policy zone <name> interface <interface>
.
Tämä on tärkeää! Esim. useat eri VLAN:t voitaisiin sitoa yksittäiseen alueeseen
Olettaen että aliverkot kuuluvat kyseiseen vyöhykkeeseen (esim. classrooms)
Esimerkki meidän vyöhykkeillä (topologiakuvassa) olisi:
set zone-policy zone WAN interface eth0
set zone-policy zone LAN interface eth1
set zone-policy zone LAN interface eth2
set zone-policy zone vyos local-zone
Ole tarkka vyöhyke-rajapinta sidonnassa
esim. vif
-rajapinnoilla komento olisi set zone-policy zone LAN interface eth2.20
Tämän jälkeen voimme ruveta tekemään säntötauluja perustuen mikä vyöhyke keskustelee minkäkin vyöhykkeen kanssa. Aloitetaan LAN->WAN.
Palomuuri: LAN->WAN
Haluamme sallia perusliikennöinnin opintojaksolla seuraavasti.
Dokumentointu sääntötaulu:
Index | Mistä | Mihin | Protokolla | Toimenpide |
---|---|---|---|---|
10 | LAN | WAN | HTTP (tcp/80) | Accept |
11 | LAN | WAN | HTTPS (tcp/443) | Accept |
20 | LAN | WAN | ICMP | Accept |
30 | LAN | WAN | SSH (tcp/22) | Accept |
40 | LAN | WAN | DNS (udp/53) | Accept |
999 | Any | Any | Any | Deny |
Joka olisi konfiguraationa
set firewall name LAN_to_WAN default-action drop
set firewall name LAN_to_WAN enable-default-log
set firewall name LAN_to_WAN rule 10 action accept
set firewall name LAN_to_WAN rule 10 destination port 80
set firewall name LAN_to_WAN rule 10 protocol tcp
set firewall name LAN_to_WAN rule 10 log enable
set firewall name LAN_to_WAN rule 11 action accept
set firewall name LAN_to_WAN rule 11 destination port 443
set firewall name LAN_to_WAN rule 11 protocol tcp
set firewall name LAN_to_WAN rule 11 log enable
set firewall name LAN_to_WAN rule 20 action accept
set firewall name LAN_to_WAN rule 20 protocol icmp
set firewall name LAN_to_WAN rule 20 log enable
set firewall name LAN_to_WAN rule 30 action accept
set firewall name LAN_to_WAN rule 30 destination port 22
set firewall name LAN_to_WAN rule 30 protocol tcp
set firewall name LAN_to_WAN rule 30 log enable
set firewall name LAN_to_WAN rule 40 action accept
set firewall name LAN_to_WAN rule 40 destination port 53
set firewall name LAN_to_WAN rule 40 protocol udp
set firewall name LAN_to_WAN rule 40 log enable
Palomuuri: WAN->LAN
Edetään WAN->LAN ja tehdään palomuurista tilallinen. Tämä tarkoittaa että kaikki liikenne joka sallitaan LAN->WAN sallii myös vastaukset takaisin WAN->LAN.
Dokumentointu sääntötaulu:
Index | Mistä | Mihin | Protokolla | Toimenpide |
---|---|---|---|---|
10 | WAN | LAN | Established sessions | Accept |
999 | Any | Any | Any | Deny |
Joka olisi konfiguraationa
set firewall name WAN_to_LAN default-action drop
set firewall name WAN_to_LAN rule 10 action accept
set firewall name WAN_to_LAN rule 10 state established enable
set firewall name WAN_to_LAN rule 10 state related enable
Palomuuri: LAN->vyos
LAN verkot tarvitsevat SSH yhteyden IP osoitteisiin joita vyos
virtuaalikone käyttää. Tämä tarkoittaa rajapintojen IP-osoitteita vyos
:lla. Myös reititysprotokolla pitää sallia, jotta dynaaminen reititys mahdollistuu.
Dokumentointu sääntötaulu:
Index | Mistä | Mihin | Protokolla | Toimenpide |
---|---|---|---|---|
10 | LAN | vyos | SSH (tcp/22) | Accept |
20 | LAN | vyos | OSPF | Accept |
999 | Any | Any | Any | Deny |
Joka olisi konfiguraationa
set firewall name LAN_to_vyos default-action drop
set firewall name LAN_to_vyos rule 10 action accept
set firewall name LAN_to_vyos rule 10 destination port 22
set firewall name LAN_to_vyos rule 10 protocol tcp
set firewall name LAN_to_vyos rule 20 action accept
set firewall name LAN_to_vyos rule 20 protocol ospf
Palomuuri: vyos->LAN
SSH yhteydet pitää sallia takaisin ulos vyos
:lta. Myös reititysprotokolla pitää sallia, jotta dynaaminen reititys mahdollistuu.
Dokumentointu sääntötaulu:
Index | Mistä | Mihin | Protokolla | Toimenpide |
---|---|---|---|---|
10 | vyos | LAN | Established sessions | Accept |
20 | vyos | LAN | OSPF | Accept |
999 | Any | Any | Any | Deny |
Joka olisi konfiguraationa
set firewall name vyos_to_LAN default-action drop
set firewall name vyos_to_LAN rule 10 action accept
set firewall name vyos_to_LAN rule 10 state established enable
set firewall name vyos_to_LAN rule 10 state related enable
set firewall name vyos_to_LAN rule 20 action accept
set firewall name vyos_to_LAN rule 20 protocol ospf
Palomuuri: vyos->WAN
Tämä viimeinen accept voilla tarpeeton, mutta varmistamaan että muodostetut (eng. established) yhteydet on sallittu takaisin WAN:sta.
Tämän on myös tarkoitettu olemaan esimerkki kyberturvallisuudesta palomuureissa
Usein kun jotain on saatu toimimaan, ei välttämättä tarkasteta onko jokainen sääntö varmasti tarpeellinen...
Jos se jätetään tuotantoverkkoon käyttöön, se voi paljastaa turhan paljon pinta-alaa hyökkäykselle.
Voit testata tämän tarpeellisuuden itse harjoitustehtävässä!!!
Dokumentointu sääntötaulu:
Index | Mistä | Mihin | Protokolla | Toimenpide |
---|---|---|---|---|
10 | vyos | WAN | Established sessions | Accept |
999 | Any | Any | Any | Deny |
Joka olisi konfiguraationa
set firewall name vyos_to_WAN default-action drop
set firewall name vyos_to_WAN rule 10 action accept
set firewall name vyos_to_WAN rule 10 state established enable
set firewall name vyos_to_WAN rule 10 state related enable
Palomuuri: WAN->vyos
Jos vyos
tekee yhteyksiä ulkomaailmaan/WANiin
(huom! niitä ei ole sallittu vyos->WAN), Me sallimme muodostetut yhteydet takaisin. Haluamme myös sallia ICMP:n jotta ping
toimii WAN
:sta ongelmanratkaisua varten.
Dokumentointu sääntötaulu:
Index | Mistä | Mihin | Protokolla | Toimenpide |
---|---|---|---|---|
10 | WAN | vyos | Established sessions | Accept |
20 | WAN | vyos | ICMP | Accept |
999 | Any | Any | Any | Deny |
Joka olisi konfiguraationa
set firewall name WAN_to_vyos default-action drop
set firewall name WAN_to_vyos rule 10 action accept
set firewall name WAN_to_vyos rule 10 state established enable
set firewall name WAN_to_vyos rule 10 state related enable
set firewall name WAN_to_vyos rule 20 action accept
set firewall name WAN_to_vyos rule 20 protocol icmp
Lopulta sidotaan sääntötaulut käyttöön vyöhykkeiden välille
Tämän materiaalin ohjeistus säännöstöstä (toivottavasti) käy järkeen tähän pisteeseen asti. Valitettavasti sääntötaulujen nimeäminen, ja miten ne otetaan käyttöön, näyttää absurdilta seuraavassa komennossa:
set zone-policy zone <destination-zone> from <source-zone> firewall name <source_to_destination>
Mutta luota minuun, nämä toimivat jos tehdään seuraavasti:
set zone-policy zone LAN from WAN firewall name WAN_to_LAN
set zone-policy zone WAN from LAN firewall name LAN_to_WAN
set zone-policy zone vyos from LAN firewall name LAN_to_vyos
set zone-policy zone LAN from vyos firewall name vyos_to_LAN
set zone-policy zone WAN from vyos firewall name vyos_to_WAN
set zone-policy zone vyos from WAN firewall name WAN_to_vyos
Testataan toiminnallisuus ulkopuolisilla laitteilla
Warning
Palomuurit ovat hankalia todentaa.
- Tämä tarkoittaa että yhteytesi saatetaan katkaista/estää. Ja sinulla ei ole mitään hajua miksi
- Tämä tarkoittaa että yhteytesi saatetaan sallia/päästää lävitse. Ja sinulla ei ole *mitään hajua miksi
Eli vaatii paljon kärsivällisyyttä ja taitoa testatakseen palomuurin toimintaa.
Jos palomuuraat reititysprotokollasi -> ongelma voikin johtua reitittämättömyydestä
Ole varma että reitityksesi toimii ennenkuin rupeat syyttämään palomuuria.
Ole valmis piirtämään ilmiötä itsellesi auki uutena kuviona, kun varmistat palomuurin toiminnallisuutta.
Seuraavat toiminnallisuudet on testattu tässä topologiassa.
Testataan HTTP LAN:sta WAN:iin
Aseta Lubuntu työasema johonkin LAN segmenttiin ja testaa yhteydellisyyttä HTTP:llä WAN:iin.
Jos sivu latautuu... HTTP toimii!
Samaa voi testata wget
-komennolla komentoriviltä.
lubuntu@lubuntu-virtualbox:~$ wget 25.0.0.3
--2020-08-26 09:31:38-- http://25.0.0.3/
Connecting to 25.0.0.3:80... connected.
HTTP request sent, awaiting response... 200 OK
Length: 11010 (11K) [text/html]
Saving to: ‘index.html’
index.html 100%[================================================>] 10,75K 10,3KB/s in 1,0s
2020-08-26 09:31:40 (10,3 KB/s) - ‘index.html’ saved [11010/11010]
lubuntu@lubuntu-virtualbox:~$
Jos index.html latautuu... HTTP toimii!
Vahvistetaan ping
LAN:sta WAN:n
Käytä samaa Lubuntu -työsemaa ja ping
aa WANiin.
lubuntu@lubuntu-virtualbox:~$ ping 25.0.0.3
PING 25.0.0.3 (25.0.0.3) 56(84) bytes of data.
64 bytes from 25.0.0.3: icmp_seq=1 ttl=62 time=2.25 ms
64 bytes from 25.0.0.3: icmp_seq=2 ttl=62 time=2.14 ms
64 bytes from 25.0.0.3: icmp_seq=3 ttl=62 time=2.49 ms
64 bytes from 25.0.0.3: icmp_seq=4 ttl=62 time=2.29 ms
^C
--- 25.0.0.3 ping statistics ---
4 packets transmitted, 4 received, 0% packet loss, time 3004ms
rtt min/avg/max/mdev = 2.140/2.291/2.491/0.127 ms
lubuntu@lubuntu-virtualbox:~$
Testaa traceroutea LAN:sta WAN:n
Oletuksena traceroute
käyttää UDP -liikennöintiä ja se ei tule toimimaan, koska UDP ei ole sallittuna palomuurimme lävitse.
lubuntu@lubuntu-virtualbox:~$ traceroute 25.0.0.3
traceroute to 25.0.0.3 (25.0.0.3), 64 hops max
1 192.168.10.254 1,356ms 1,284ms 0,856ms
2 10.0.2.2 1,584ms 1,205ms 1,026ms
3 * * *
4 * * *
5 * * *
6 * * *
7 * * *
8 * ^C
lubuntu@lubuntu-virtualbox:~$
Lisätään vipu --icmp
ja traceroute
lähtee toimimaan, koska ICMP on sallittuna palomuurin lävitse.
lubuntu@lubuntu-virtualbox:~$ traceroute --icmp 25.0.0.3
traceroute to 25.0.0.3 (25.0.0.3), 64 hops max
1 192.168.10.254 1,351ms 0,688ms 1,086ms
2 10.0.2.2 1,499ms 1,419ms 1,310ms
3 25.0.0.3 1,447ms 1,302ms 1,283ms
Testataan nmap
:lla palomuurin toimivuutta
Käytä samaa Lubuntu työasemaa LAN:ssa nmap
paamaan (network map) WAN:n osoite.
lubuntu@lubuntu-virtualbox:~$ sudo nmap -sS 25.0.0.3
[sudo] password for lubuntu:
Starting Nmap 7.80 ( https://nmap.org ) at 2020-08-26 09:26 EEST
Nmap scan report for 25.0.0.3
Host is up (0.0020s latency).
Not shown: 997 filtered ports
PORT STATE SERVICE
22/tcp closed ssh
80/tcp open http
443/tcp closed https
Nmap done: 1 IP address (1 host up) scanned in 5.05 seconds
Todennetaan toimivuus show -komennoilla
show log firewall name LAN_to_WAN
esittää hyväksytyt paketit
Huomaa tulosteessa LAN_to_WAN-10-A joka viittaa rule 10 accepted
vyos@vyos:~$ show log firewall name LAN_to_WAN
Aug 21 12:29:16 vyos kernel: [18330.405794] [LAN_to_WAN-10-A] IN=eth2 OUT=eth3
MAC=08:00:27:89:07:23:08:00:27:27:8e:31:08:00 SRC=192.168.10.9 DST=25.0.0.3
LEN=52 TOS=0x00 PREC=0x00 TTL=62 ID=19840 DF PROTO=TCP SPT=59884 DPT=80
WINDOW=501 RES=0x00 ACK FIN URGP=0
show log firewall name LAN_to_WAN
esittää tiputetut/kielletyt paketit
Huomaa tulosteessa LAN_to_WAN-default-D joka viittaa default-action dropped
Tämä oli traceroute
joka käytti UDP/33438, mitä ei ollut sallittu palomuurisäännöstössämme.
vyos@vyos:~$ show log firewall name LAN_to_WAN
Aug 21 12:31:08 vyos kernel: [18442.659929] [LAN_to_WAN-default-D]IN=eth2 OUT=eth3
MAC=08:00:27:89:07:23:08:00:27:27:8e:31:08:00 SRC=192.168.10.9 DST=25.0.0.3
LEN=37 TOS=0x00 PREC=0x00 TTL=3 ID=42867 DF PROTO=UDP SPT=50269 DPT=33438 LEN=17
vyos@vyos:~$
Jatka harjoituksiin!
Takaisin opintojakson aikatauluun?
Takaisin opintojakson aikatauluun
Lisenssi
Tämän opintojakson materiaalin on kirjoittanut Karo Saharinen ja se on lisensoitu Creative Commons Nimeä-EiKaupallinen-EiMuutoksia 4.0 Kansainvälinen -lisenssillä.